import datetime
from utils.mongo_client import MongoClientManager

class UserActionLogger:
    """
    用户行为日志工具类，支持写入和查询用户行为日志。
    日志存储在MongoDB的user_actions集合。
    """
    @staticmethod
    def log_action(user_id, action, detail=None):
        """
        记录用户行为日志
        Args:
            user_id: 用户ID
            action: 行为类型（如 'login', 'view', 'click', 'purchase' 等）
            detail: 额外信息（dict，可选）
        """
        client = MongoClientManager.get_client()
        db = client['app_data']
        collection = db['user_actions']
        doc = {
            'user_id': user_id,
            'action': action,
            'detail': detail or {},
            'timestamp': datetime.datetime.utcnow()
        }
        collection.insert_one(doc)

    @staticmethod
    def get_actions(user_id=None, action=None, limit=100):
        """
        查询用户行为日志
        Args:
            user_id: 用户ID（可选）
            action: 行为类型（可选）
            limit: 返回条数（默认100）
        Returns:
            日志列表
        """
        client = MongoClientManager.get_client()
        db = client['app_data']
        collection = db['user_actions']
        query = {}
        if user_id:
            query['user_id'] = user_id
        if action:
            query['action'] = action
        cursor = collection.find(query).sort('timestamp', -1).limit(limit)
        return list(cursor)

# 用法示例：
# UserActionLogger.log_action(user_id=123, action='login', detail={'ip': '1.2.3.4'})
# logs = UserActionLogger.get_actions(user_id=123, action='login') 